MVVM Light Toolkit এবং Messenger Class ব্যবহার

Microsoft Technologies - এমভিভিএম (MVVM) MVVM এবং Messaging System |
226
226

MVVM Light Toolkit হল একটি জনপ্রিয় লাইব্রেরি যা MVVM (Model-View-ViewModel) ডিজাইন প্যাটার্নের উপর ভিত্তি করে তৈরি। এটি WPF, Xamarin, এবং Silverlight এর মতো প্রযুক্তিতে MVVM প্যাটার্ন বাস্তবায়নকে সহজ করে তোলে। এই টুলকিটের অন্যতম প্রধান বৈশিষ্ট্য হল Messenger Class, যা ViewModel গুলির মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়।

MVVM Light Toolkit সম্পর্কে

MVVM Light Toolkit MVVM প্যাটার্নের একাধিক মৌলিক ধারণা সরবরাহ করে, যেমন:

  • RelayCommand: এটি ICommand ইন্টারফেসের একটি বাস্তবায়ন যা ViewModel-এ কমান্ড হ্যান্ডলিং সিস্টেম সহজ করে।
  • Messenger: এই ক্লাসটি ViewModel এবং View এর মধ্যে ডেটা বা বার্তা আদান-প্রদান করার জন্য ব্যবহৃত হয়। এটি গঠনমূলকভাবে ডেটা সিঙ্ক্রোনাইজ করতে সাহায্য করে, যখন সরাসরি ডেটা বাইন্ডিং বা ইভেন্ট ব্যবস্থাপনা প্রয়োজন হয় না।

Messenger Class কী এবং কেন এটি ব্যবহৃত হয়?

Messenger Class হল MVVM Light Toolkit এর একটি গুরুত্বপূর্ণ উপাদান। এটি ViewModel এবং View এর মধ্যে, অথবা একাধিক ViewModel এর মধ্যে, বার্তা পাঠানোর এবং গ্রহণ করার জন্য ব্যবহৃত হয়। Messenger সাধারণত EventAggregator হিসাবে কাজ করে, যা কোনো নির্দিষ্ট ধরনের ViewModel অথবা View কে সরাসরি জানানো ছাড়াই তাদের মধ্যে যোগাযোগের সুযোগ দেয়।

এটি ViewModel এর মধ্যে ডেটা শেয়ার বা View এর মধ্যে কোনো নির্দিষ্ট ইভেন্ট ট্রিগার করার জন্য ব্যবহৃত হতে পারে।


Messenger Class ব্যবহারের উদাহরণ

ধরা যাক, আপনি একটি অ্যাপ্লিকেশনে এমন একটি পরিস্থিতি তৈরি করতে চান যেখানে একটি ViewModel অন্য ViewModel অথবা View-এ বার্তা পাঠাতে পারে। এই কাজটি সহজে করতে Messenger Class ব্যবহৃত হতে পারে।

1. Messenger এর মাধ্যমে বার্তা পাঠানো

ViewModel-এ, Messenger ক্লাস ব্যবহার করে একটি বার্তা পাঠানোর উদাহরণ:

using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Messaging;

public class MainViewModel : ViewModelBase
{
    public MainViewModel()
    {
        // Messenger এর মাধ্যমে বার্তা পাঠানো
        Messenger.Default.Send("Hello from MainViewModel");
    }
}

এখানে, Messenger.Default.Send() মেথডটি একটি বার্তা পাঠানোর কাজ করে। এটি একটি স্ট্রিং বার্তা পাঠাচ্ছে, কিন্তু আপনি যে কোনো ধরনের অবজেক্ট পাঠাতে পারেন।

2. Messenger এর মাধ্যমে বার্তা গ্রহণ করা

অন্য ViewModel বা View-এ বার্তা গ্রহণের জন্য, আপনি Register মেথড ব্যবহার করতে পারেন।

using GalaSoft.MvvmLight.Messaging;

public class AnotherViewModel : ViewModelBase
{
    public AnotherViewModel()
    {
        // বার্তা গ্রহণ করার জন্য রেজিস্টার করা
        Messenger.Default.Register<string>(this, (message) =>
        {
            // বার্তা গ্রহণ এবং প্রসেস করা
            Console.WriteLine("Received message: " + message);
        });
    }
}

এখানে, AnotherViewModel বার্তা গ্রহণের জন্য Messenger.Default.Register ব্যবহার করছে। এটি একটি স্ট্রিং বার্তা গ্রহণ করছে এবং তা কনসোলে প্রদর্শন করছে।

3. বার্তা পাঠানোর এবং গ্রহণের উদাহরণ

ধরা যাক, MainViewModel থেকে AnotherViewModel-এ একটি বার্তা পাঠানো হচ্ছে, এবং AnotherViewModel সেই বার্তাটি গ্রহণ করবে:

// MainViewModel থেকে বার্তা পাঠানো
Messenger.Default.Send("Data from MainViewModel", "MyMessage");

// AnotherViewModel-এ বার্তা গ্রহণ
Messenger.Default.Register<string>(this, "MyMessage", (message) =>
{
    Console.WriteLine("Received message: " + message);
});

এখানে:

  • Messenger.Default.Send() মেথডের দ্বিতীয় প্যারামিটার "MyMessage" বার্তার একটি ট্যাগ হিসেবে কাজ করে। এটি বার্তাগুলির মধ্যে পার্থক্য করতে সাহায্য করে, যাতে নির্দিষ্ট একটি বার্তা টাইপের জন্য সাবস্ক্রাইব করা যায়।
  • Messenger.Default.Register() মেথডে এই ট্যাগটি ব্যবহৃত হচ্ছে যাতে নির্দিষ্ট ধরনের বার্তা নেওয়া যায়।

Messenger Class এর সুবিধা

  1. Loose Coupling:
    • Messenger Class ব্যবহারের মাধ্যমে ViewModel গুলি একে অপরের সাথে সরাসরি যোগাযোগ না করেও ডেটা আদান-প্রদান করতে পারে। এতে ViewModel গুলির মধ্যে সম্পর্ক আরও দুর্বল (loose) থাকে, যা অ্যাপ্লিকেশনটিকে আরও ফ্লেক্সিবল ও টেস্টযোগ্য করে তোলে।
  2. Easy Communication:
    • একই টাইপের বা ভিন্ন টাইপের ViewModel এর মধ্যে সহজেই বার্তা পাঠানো সম্ভব হয়। আপনি বার্তা পাঠানোর জন্য কোনো নির্দিষ্ট ইন্টারফেস বা ডেটা শেয়ারিং মেকানিজম তৈরি করতে হবে না।
  3. Event-driven Architecture:
    • Messenger ক্লাসটি ইভেন্ট-ভিত্তিক আর্কিটেকচার তৈরি করতে সাহায্য করে, যার মাধ্যমে ViewModel গুলি একে অপরের কাছে ইভেন্ট বা বার্তা পাঠাতে পারে।
  4. No Need for Direct References:
    • ViewModel গুলি সরাসরি একে অপরকে রেফারেন্স না করেও বার্তা আদান-প্রদান করতে পারে, ফলে অ্যাপ্লিকেশনের মডিউলারিটি এবং কোড রিইউজেবিলিটি বৃদ্ধি পায়।

Messenger Class ব্যবহার করার সময় কিছু টিপস

  • Unregister:

    • যখন আর ViewModel এর প্রয়োজন না থাকে, তখন বার্তা গ্রহণের জন্য Register-এর রেজিস্ট্রেশন বন্ধ করতে Messenger.Default.Unregister() ব্যবহার করা যেতে পারে, যাতে মেমরি লিক না হয়।
    Messenger.Default.Unregister(this);
    
  • Message Types:
    • বার্তা পাঠানোর সময় এটি নিশ্চিত করুন যে বার্তা টাইপ এবং ট্যাগ সঠিকভাবে ব্যবহৃত হচ্ছে, বিশেষ করে যখন আপনি একটি নির্দিষ্ট ধরনের বার্তা পাঠাচ্ছেন।
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion